<?php
/**
 * tp5上传文件封装
 * User: 毛文科
 * Date: 2018/8/21 0021
 * Time: 15:50
 */
namespace app\index\model;
use think\Request;

class UpFile
{
    /**一个name一个文件上传
     * @param Request $request:post请求数据
     * @param string $url:上传的保存路径
     * @param null $validate:验证
     * @param bool $newname:是否重命名
     * @return array|bool:失败返回false，成功返回文件名数组
     */
    static function getFile(Request $request,$validate=null,$url=null,$newname=true){
        //检测是否输入保存路径
        if(!$url){
            $url = config('FileRoot');
        }
        //return $url;
        //获取文件上传的对象
        $file = $request->file();
        $array = [];
        if(!$file){
            return false;
        }
        //如果有多个文件上传
        foreach ($file as $key=>$files){
            //是否有验证条件
            if($validate){
                //检测是否重命名
                if($newname){
                    $info = $files->validate($validate)->rule('uniqid')->move($url);
                }else{
                    $info = $files->validate($validate)->rule('uniqid')->move($url,'');
                }
            }else{
                //检测是否重命名
                if($newname){
                    $info = $files->rule('uniqid')->move($url);
                }else{
                    $info = $files->rule('uniqid')->move($url,'');
                }
            }
            if(!$info){
                return false;
            }
            $array[$key] = $info->getFilename();
        }
        if(count($array)){
            return $array;
        }else{
            return false;
        }
    }

    /**一个name多个文件上传
     * @param Request $request:请求数据
     * @param string $url:上传的保存路径
     * @param null $validate:是否验证
     * @param bool $newname:是否重命名
     * @return array|bool:失败返回false，成功返回数组
     */
    static public function getFiles(Request $request,$validate=null,$url=null,$newname=true){
        if(!$url){
            $url = config('FileRoot');
        }
        $file = $request->file();
        $array = [];
        if(!$file){
            return false;
        }
        foreach ($file as $key=>$value){
            foreach ($value as $files){
                if($validate){
                    if($newname){
                        $info = $files->validate($validate)->rule('uniqid')->move($url);
                    }else{
                        $info = $files->validate($validate)->rule('uniqid')->move($url,'');
                    }
                }else{
                    if($newname){
                        $info = $files->rule('uniqid')->move($url);
                    }else{
                        $info = $files->rule('uniqid')->move($url,'');
                    }
                }
                if(!$info){
                    return false;
                }
                $array[$key][] = $info->getFilename();
            }
        }
        if(count($array)){
            return $array;
        }else{
            return false;
        }
    }
}